// 判定字符是否唯一
//测试链接 https://leetcode.cn/problems/is-unique-lcci/
public class IsUnique {
    //哈希
    public boolean isUnique1(String astr) {
        int[] arr = new int[26];

        for(int i = 0; i < astr.length(); i++){
            int index = astr.charAt(i) - 'a';
            if(arr[index] == 1){
                return false;
            }else{
                arr[index]++;
            }
        }
        return true;
    }

    //位图
    public boolean isUnique2(String astr) {
        if(astr.length() > 26){
            return false;
        }
        //利用位图实现
        int ret = 0;
        for(int i = 0 ; i < astr.length(); i++){
            int pos = astr.charAt(i) - 'a'; //
            if( ((ret >> pos) & 1)  == 1 ){  //判断pos位置上是不是1
                return false;
            }else{
                ret |= (1 << pos);
            }
        }
        return true;
    }
}
